<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 三个请求，需要同时拿到三个请求成功后的数据

    // then的链式调用，只能做到保证执行顺序，无法实现同时获取所有数据


    // const p1 = ajax("A");
    // const p2 = ajax("B");
    // const p3 = ajax("C");

    // 批处理
    // all：全部成功才是成功，只要有一个失败，就是失败
    // const p = Promise.all([p1,p2,p3]);
    // race：只要有一个结束，就结束，不管成功还是失败
    // const p = Promise.race([p1,p2,p3]);

    // p.then(res=>{
    //     console.log(res);
    // }).catch(code=>{
    //     console.log(code);
    // })

    // ======

    // const p = new Promise(()=>{})
    // console.log(p);

    // const p1 = Promise.resolve("hello");
    // console.log(p1);
    // p1.then(res=>{
    //     console.log(res);
    // })

    // const p2 = Promise.reject("world");
    // console.log(p2);
    // p2.catch(code=>{
    //     console.log(code)
    // })

    // ajax("A").then(res=>{
    //     console.log(res)
    //     // return Promise.resolve("hello");
    //     // return "hello";
    //     return Promise.reject("world");
    // }).then(res=>{
    //     console.log(res);
    // }).catch(code=>{
    //     console.log(code)
    // })


    // =======

    const p1 = ajax("A");
    const p2 = ajax("B");
    const p3 = ajax("C");

    // Promise.any([p1,p2,p3]).then(res=>{
    //     console.log(res);
    // }).catch(code=>{
    //     console.log(code);
    // })

    Promise.allSettled([p1,p2,p3]).then(res=>{
        console.log(res);
    })

















    function ajax(url){
        return new Promise((resolve, reject)=>{
            // 正在进行时...
            // 开启异步程序
            setTimeout(()=>{
                resolve(url + "请求成功");
            }, Math.random() * 500);

            setTimeout(()=>{
                reject(url + "请求失败");
            }, Math.random() * 500);
        })
    }

    
</script>
</html>